package com.liuyanzhao.blog.mapper.custom;



import com.liuyanzhao.blog.entity.Category;
import com.liuyanzhao.blog.entity.custom.ArticleCustom;
import com.liuyanzhao.blog.entity.custom.CategoryCustom;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @author Anbing Cui
 *  [功能描述]
 * @CrateTime: 2019年6月22日
 */
@Repository
public interface CategoryMapperCustom {
	/**
	 * 
	 *  查询分类总数
	 * @param status
	 * @return
	 * @throws Exception
	 * @Return: Integer
	 * @author Anbing Cui
	 * @CreateDate: 2019年6月22日 下午4:23:25
	 */
	public Integer countCategory(@Param(value="status") Integer status) throws Exception;
	
	/**
	 * 
	 *  获得分类列表
	 * @param status
	 * @return
	 * @throws Exception
	 * @Return: List<CategoryCustom>
	 * @author Anbing Cui
	 * @CreateDate: 2019年6月22日 下午4:23:38
	 */
	public List<CategoryCustom> listCategory(@Param(value="status") Integer status) throws Exception;
	
	/**
	 * 
	 * 根据分类id获得分类信息
	 * @param status
	 * @param id
	 * @return
	 * @throws Exception
	 * @Return: CategoryCustom
	 * @author Anbing Cui
	 * @CreateDate: 2019年6月22日 下午4:23:47
	 */
	public CategoryCustom getCategoryById(@Param(value="status") Integer status,@Param(value="id")Integer id) throws Exception;

	/**
	 * 
	 *  获得含有该分类的文章列表
	 * @param status
	 * @param cateId
	 * @param startPos
	 * @param pageSize
	 * @throws Exception
	 * @Return: List<ArticleCustom>
	 * @author Anbing Cui
	 * @CreateDate: 2019年6月22日 下午4:23:55
	 */
	public List<ArticleCustom> listArticleWithCategoryByPage(
			@Param(value="status") Integer status,
			@Param(value = "cateId") Integer cateId
			,@Param(value="startPos") Integer startPos
			,@Param(value="pageSize") Integer pageSize
	) throws Exception;

	/**
	 * 
	 *  删除分类
	 * @param id
	 * @throws Exception
	 * @Return: void
	 * @author Anbing Cui
	 * @CreateDate: 2019年6月22日 下午4:24:04
	 */
	public void deleteCategory(Integer id) throws Exception;

	/**
	 * 
	 *  根据父分类找子分类
	 * @param status
	 * @param id
	 * @throws Exception
	 * @Return: List<CategoryCustom>   返回所有符合条件的子类
	 * @author Anbing Cui
	 * @CreateDate: 2019年6月22日 下午4:24:11
	 */
	public List<CategoryCustom> findChildCategory(@Param(value="status") Integer status,@Param(value="id")Integer id) throws Exception;

	/**
	 * 
	 * 根据标签名获取标签
	 * @param name
	 * @throws Exception
	 * @Return: Category
	 * @author Anbing Cui
	 * @CreateDate: 2019年6月22日 下午4:24:20
	 */
	public Category  getCategoryByName(String name) throws Exception;

}



